//v2版本，   10 万个元素 5 万次操作 合并时间：4.3339 ms 查找时间：0.8941 ms
//           1 万个元素  0.5 万次操作 合并时间：1.1436 ms 查找时间：0.8613 ms   
public class union_find_v2 extends union_find_v0{
    public union_find_v2(int number)
    {
        super(number);
    }

    public int root(int a)
    {
        int i=a;
        while(true)
        {
        if(i==this.a[i])
        {
            return i;
        }
        else
        {
            i=this.a[i];
        }
    }
    }
    public boolean connected(int a,int b)
    {
        if(a>this.a.length||b>this.a.length)
        {
            System.out.printf("输入越界！");
            return true;
        }
        return (root(a)==root(b));
    }
    public void union(int a,int b)
    {
        if(connected(a,b))
        {
            return ;
        }
        else
        {
            this.a[root(a)]=this.a[root(b)];
        }
    }
}
